Systems built using modern semiconductors often include programmable logic, in the form of processors, controllers and all manners of embedded devices that can be programmed to perform various functions. Many systems are built around such semiconductors and the functionality enabled by these devices is realized by firmware, which is software that is permanently programmed into memory of the system (and/or semiconductor device itself) and thus presents a permanent program for operation.
Oftentimes, firmware will be revised during the course of chip development. Furthermore, during a production lifecycle of a chip, firmware may regularly change to provide updates or different or improved features. Still further, different versions of firmware may enable a chip to be sold with different feature sets, often at different price points. Typically, firmware is implemented in a read-only memory (ROM) which is built by hard wiring the firmware program into a mask set used to fabricate the chip. Accordingly, the ROM is fixed and any variations to the firmware by way of updates, different versions, and the like require multiple mask sets. Mask sets are expensive to produce and furthermore can take many weeks to obtain. Such time and expense are not conducive to development cycles, nor is it efficient for production usage. Accordingly, a need exists for an improved manner of implementing firmware in a semiconductor device.